<?php
/**
 * IO cls
 *
 */
class io extends base{
	/**
	 * 写文件
	 *
	 * @param unknown_type $path
	 * @param unknown_type $content
	 * @return unknown
	 */
	public static function write($path,&$content){
		self::chkDir($path);
		return file_put_contents($path,$content);
	}
	/**
	 * 检查路径并创建路径
	 *
	 * @param unknown_type $f
	 */
	public static function chkDir($f){
		if(is_file($f)){
			return true;
		}
		$arr = explode("/",$f);
		$fp = array_shift($arr)."/";
		array_pop($arr);
		for($i=0;$i<sizeof($arr);$i++){
			$fp = $fp.$arr[$i]."/";
			if(!is_dir($fp)){
				@mkdir($fp);
			}
		}
	}
	/**
	 * 删除文件
	 *
	 * @param unknown_type $path
	 * @return unknown
	 */
	public static function remove($path){
		if(is_file($path)){
			@unlink($path);
			return true;
		}
		return false;
	}
	/**
	 * 读文件
	 *
	 * @param unknown_type $path
	 * @return unknown
	 */
	public  static function read($path){
		if(file_exists($path)){
			$str = file_get_contents($path);
			if(sizeof($str)){
				return $str;
			}
			return null;
		}else{
			return null;
		}
	}
	/**
	 * 获取上次修改时间
	 *
	 * @param unknown_type $f
	 * @return unknown
	 */
	public static function getModTime($path){
		if(file_exists($path)){
			return filemtime($path);
		}else{
			return null;
		}
	}

	/**
	 * 检查缓存是否可用
	 *
	 * @param unknown_type $path
	 * @param unknown_type $cache_time
	 * @return unknown
	 */
	public static function isExp($path,$cache_time=0){
		if(file_exists($path)){
			//-1 永不过期
			if($cache_time<0){
				return false;
			}
			$nt = time();
			$ft = self::getModTime($path);
			if($nt<($ft+$cache_time)){
				#尚未过期
				return false;
			}
		}
		#默认过期
		return true;
	}
	/**
	 * 删除目录及文件
	 *
	 * @param unknown_type $path
	 */
	public static function removeDir($path){
		if(substr($path, -1, 1)!= "/"){
			$path .= "/";
		}
		#限定删除范围
		if(preg_match('/(archive)|(cache)|(upload)|(plugin)|(themes)/i',$path)){
			foreach(glob($path . "*") as $file){
				if(is_file($file) === TRUE){
					@unlink($file);
				}else if (is_dir($file) === TRUE){
					self::removeDir($file);
				}
			}
			if(is_dir($path) === TRUE){
				@rmdir($path);
			}
		}else{
			throwException("无法删除未经授权的目录或文件!",__file__,__line__);
		}
	}
}


?>